package com.zyf.chapter02.creation.factory.simple;

import com.zyf.chapter02.creation.factory.util.*;

import java.util.HashMap;
import java.util.Map;

/**
 * 为了让类职责更加单一，代码更加清晰，将 createParser() 函数剥离到一个独立的类中让这个类只负责创建
 * @author yifeng
 */
public class V2RuleConfigParserFactory {
    private static final Map<String, IRuleConfigParser> cachedParsers = new HashMap<>();

    // 提前缓存 可节省内存和对象创建
    static {
        cachedParsers.put("json", new JsonRuleConfigParser());
        cachedParsers.put("xml", new XmlRuleConfigParser());
        cachedParsers.put("yaml", new YamlRuleConfigParser());
        cachedParsers.put("properties", new PropertiesRuleConfigParser());
    }


    public static IRuleConfigParser createParser(String configFormat) {
        if (configFormat == null || configFormat.isEmpty()) {
            return null;
        }
        IRuleConfigParser parser = cachedParsers.get(configFormat.toLowerCase());
        return parser;
    }
}
